const path = require('path');
// 项目的根目录
const basePath = __dirname;
// 打包时会把上一次目录干掉，看出是哪一次，相当于清除一次
// clean-webpack-plugin 清理每次打包下没有使用的文件
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

module.exports = {
    // 上下文
    context: path.resolve(basePath, 'src'),
    resolve: {
        extensions: ['.js']
    },
    // 入口文件
    entry: {
        // 入口文件不止一个
        app: ['./index.js'],  // app 取得别名
        // http 工作流 react 一次进来
        // 缺点：请求次数增加  
        // 优点：react文件会缓存 更新时候比较慢，不会出现304
        vendor: [
            'lodash',
            'react',
            'react-dom',
            'react-router',
            'redux'
        ]
    },
    // 出口文件
    output: {
        // [name] 表示 变量名占位
        // [chunkhash]  哈希值，每次打包名字都不一样 生成每个不同的文件
        // [chunkhash] 生成不同文件，请求不止一次，会缓存，如果没有代码更新，下一次不用再次发送请求
        filename: "[name].[chunkhash].js"
    },
    // 打包
    module: {
        // 规则
        rules: [
            {
                test: /\.js$/,
                // 排除 node_modules 优化
                exclude: /node_modules/,
                loader: 'babel-loader'
            }
        ]
    },
    plugins: [
        new CleanWebpackPlugin()
    ]
}